Este término proviene del mundo de la investigación científica en donde una investigación es considerada reproducible o replicable si existe información suficiente para que un grupo de investigadores independientes con nuevos datos, siguiendo el procedimiento indicado, puedan obtener los mismos resultados que la investigación original.
“Los datos y el código utilizados para realizar un descubrimiento estan disponibles y son suficientes para que otro investigador pueda replicar el descubrimiento” Xie, Y. (2016).
Para crear generar nuestros documentos necesitamos instalar los siguiente paquetes.
install.packages("knitr",dependencies = T)
install.packages("rmarkdown", dependencies = T)Una vez instalado debemos seguir los siguiente pasos para generar nuestro primer documento y confirmar que tenemos instalado correctamente todas la dependencias.
Si has seguido correctamente los pasos deberías tener un resultado muy similar a este:
---
title: "Untitled"
author: "Nombre del Autor"
date: "00/00/0000"
output: html_document
---
YAML es formato de especificación de datos basado en texto pensado para su fácil lectura, en nuestros documentos nos permitirá indicar información como:
Algunas de estas opciones que no están disponibles en todos los formatos, para el formato HTML tememos la posibilidad de utilizar diferentes temas, el parámetro theme indica el tema del documento y highlight el tema del código.
output:
html_document:
theme: united
highlight: tango
Entre los temas de documento tenemos disponibles están : “default”, “cerulean”, “journal”, “flatly”, “readable”, “spacelab”, “united”, “cosmo”, “lumen”, “paper”, “sandstone”, “simplex”, y “yeti”.
Mientras que como temas para el código podemos encontrar : “default”, “tango”, “pygments”, “kate”, “monochrome”, “espresso”, “zenburn”, “haddock”, y “textmate”.
Nuestro primer documento tendrá un YAML muy similar a este :
---
title: "Mi primer documento"
author: "Nombre del Autor"
date: "00/00/000"
output: html_document
---
El cuerpo de nuestro documento estará compuesto principalmente por, texto, imagenes, enlaces a otros documentos y códito en R, tablas de datos, gráficos entre otros, a continuación vamos a aprender como darle formato a nuestro texto.
Con Markdown podemos darle diversos formatos a nuestro texto desde el tamaño:
Como se ven en Markdown
# Texto
## Texto
### Texto
#### Texto
##### Texto
Como se ve en el documento generado
variaciones entre negrita, italica, texto tachado y formulas matemáticas \(\sum_{i=1}^{10} t_i\)
Como se ven en Markdown
**negrita**
*itálica*
~~texto tachado~~
$\sum_{i=1}^{10} t_i$
Como se ve en el documento generado
negrita
itálica
texto tachado
\(\sum_{i=1}^{10} t_i\)
En el caso de las fórmulas matemáticas se utiliza la sintaxis de Latex para generar las fórmulas, para ver sobre el tema puedes ir al siguiente enlace Fórmulas matemáticas.
Tanto los enlaces como las imágenes tiene una sintaxis muy similar.
[nombre del enlace](diraccion url)
####Ejemplo
[Formulas matemáticas](http://csrgxtu.github.io/2015/03/20/Writing-Mathematic-Fomulars-in-Markdown/)
O en el caso de una imagen

####Ejemplo

Las listas también son sencillas de hacer utilizando markdown
Como se ven en Markdown
* unordered list
* item 2
+ sub-item 1
+ sub-item 2
1. ordered list
2. item 2
+ sub-item 1
+ sub-item 2
¿Cómo se ve en el documento generado?
Y por último tenemos la opción de crear tablas
¿Cómo se ven en Markdown?
Table Header | Second Header
------------- | -------------
Table Cell | Cell 2
Cell 3 | Cell 4
¿Cómo se ve en el documento generado?
| Table Header | Second Header |
|---|---|
| Table Cell | Cell 2 |
| Cell 3 | Cell 4 |
Hasta ahora hemos utilizado Rstudio como editor de texto pero su verdadera potencia está en la capacidad de ejecutar código en R, para esto utilizaremos porciones de código llamados “chunks” en donde podremos nuestro código y al generar el documento este será ejecutado.
Así se ve nuestro código en el documento sin generar.
Así se ve nuestro código en el documento generado.
Es importante tomar en cuenta que si queremos cargar algún paquete, hacer alguna configuración para nuestro documento o definir una variable global es recomendado hacerlo en el primer chunk que encontrarás en el documento generado por R para este fin.
Un chunk nos permite a través de una serie de parámetros modificar su comportamiento.
Después del formato .csv el formato .xls (Excel 2003) y .xlsx (Excel 2007 en adelante) es el tipo de archivo más utilizado para almacenar y comunicar datos entre equipos de trabajo, para esto utilizaremos las facilidades que nos permite el paquete readxl.
install.packages("readxl")El paquete nos permite utilizar algunos archivos xls y xlsx que este incluye, inicialmente trabajaremos con estos y luego repetiremos nuestro trabajo utilizando nuestro propio archivo.
library(readxl)xls_ejemplo <- readxl_example("datasets.xls")
xls_ejemplo[1] "/Library/Frameworks/R.framework/Versions/3.4/Resources/library/readxl/extdata/datasets.xls"
datos <- read_excel(xls_ejemplo)
datos# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <chr>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows
Es importante tomar en cuenta que un archivo de Excel normalmente se encuentra compuesto por varias hojas de cálculo, la función read_excel por defecto leerá la primera de estas hojas pero si queremos sabe cuantas hojas componen nuestro archivo y leer alguna es especifico podemos utilizar el comando excel_sheets.
excel_sheets(xls_ejemplo)[1] "iris" "mtcars" "chickwts" "quakes"
Como podemos ver este archivo esta compuesto por 4 hojas de datos y por defecto la función read_excel seleccionó la hoja de datos iris, podemos indicarle cual leer utilizando el parámetro sheet.
datos <- read_excel(xls_ejemplo, sheet = "mtcars")
datos# A tibble: 32 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
# ... with 22 more rows
Para que R pueda encontrar nuestro archivo debemos indicarle el directorio donde están los archivos que vamos a utilizar, lo recomendado es tener todos los archivos en una sola carpeta.
excel_sheets("EjemploEstudiantes.xlsx")Warning in strptime(x, format, tz = tz): unknown timezone 'zone/tz/2017c.
1.0/zoneinfo/America/Costa_Rica'
[1] "Notas"
Como podemos ver nuestro archivo esta compuesto únicamente por una hoja de datos.
datos <- read_excel("EjemploEstudiantes.xlsx")
datos# A tibble: 10 x 6
X__1 Matematicas Ciencias Espanol Historia EdFisica
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Lucia 7.0 6.5 9.2 8.6 8.0
2 Pedro 7.5 9.4 7.3 7.0 7.0
3 Ines 7.6 9.2 8.0 8.0 7.5
4 Luis 5.0 6.5 6.5 7.0 9.0
5 Andres 6.0 6.0 7.8 8.9 7.3
6 Ana 7.8 9.6 7.7 8.0 6.5
7 Carlos 6.3 6.4 8.2 9.0 7.2
8 Jose 7.9 9.7 7.5 8.0 6.0
9 Sonia 6.0 6.0 6.5 5.5 8.7
10 Maria 6.8 7.2 8.7 9.0 7.0
Cantidad de filas que se van a leer n_max:
datos <- read_excel("EjemploEstudiantes.xlsx",n_max = 4)
datos# A tibble: 4 x 6
X__1 Matematicas Ciencias Espanol Historia EdFisica
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Lucia 7.0 6.5 9.2 8.6 8.0
2 Pedro 7.5 9.4 7.3 7.0 7.0
3 Ines 7.6 9.2 8.0 8.0 7.5
4 Luis 5.0 6.5 6.5 7.0 9.0
Rango de las celdas de Excel que se leerán:
datos <- read_excel("EjemploEstudiantes.xlsx", range = "C1:E4")
datos# A tibble: 3 x 3
Ciencias Espanol Historia
<dbl> <dbl> <dbl>
1 6.5 9.2 8.6
2 9.4 7.3 7.0
3 9.2 8.0 8.0
Rango de filas o columnas a leer:
datos <- read_excel("EjemploEstudiantes.xlsx", range = cell_rows(1:4))
datos# A tibble: 3 x 6
X__1 Matematicas Ciencias Espanol Historia EdFisica
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Lucia 7.0 6.5 9.2 8.6 8.0
2 Pedro 7.5 9.4 7.3 7.0 7.0
3 Ines 7.6 9.2 8.0 8.0 7.5
datos <- read_excel("EjemploEstudiantes.xlsx",range = cell_cols("B:D"))
datos# A tibble: 10 x 3
Matematicas Ciencias Espanol
<dbl> <dbl> <dbl>
1 7.0 6.5 9.2
2 7.5 9.4 7.3
3 7.6 9.2 8.0
4 5.0 6.5 6.5
5 6.0 6.0 7.8
6 7.8 9.6 7.7
7 6.3 6.4 8.2
8 7.9 9.7 7.5
9 6.0 6.0 6.5
10 6.8 7.2 8.7
En R existe la figura del valor ausente que ya hemos visto se representa con NA, es común que cada grupo de trabajo defina que valor utilizará para hacer referencia a los datos ausentes, por ejemplo “N/A” o “NS/NC”, el parámetro na nos permite indicar el valor que utilizamos en nuestro archivo de Excel y R lo remplazará este valor por NA.
datos <- read_excel("EjemploEstudiantes02.xlsx", na = "-")
datos# A tibble: 10 x 6
X__1 Matematicas Ciencias Espanol Historia EdFisica
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Lucia 7.0 6.5 9.2 8.6 8.0
2 Pedro 7.5 9.4 7.3 7.0 7.0
3 Ines 7.6 9.2 8.0 NA 7.5
4 Luis 5.0 6.5 6.5 7.0 9.0
5 Andres 6.0 NA 7.8 8.9 7.3
6 Ana 7.8 9.6 7.7 8.0 6.5
7 Carlos 6.3 6.4 8.2 9.0 7.2
8 Jose 7.9 9.7 7.5 NA 6.0
9 Sonia 6.0 6.0 6.5 5.5 8.7
10 Maria 6.8 7.2 8.7 9.0 7.0
Es muy importante tener en consideración es que al leer una tabla de Excel los nombres de fila se leerán como una variable más dentro de nuestra tabla para hacer algunos análsis que requieren sólo variables numéricas hacemos la siguiente modificación.
datos <- read_excel("EjemploEstudiantes.xlsx")
datos <- as.data.frame(datos)
rownames(datos) <- datos$X__1
datos <- datos[,-1]
str(datos)'data.frame': 10 obs. of 5 variables:
$ Matematicas: num 7 7.5 7.6 5 6 7.8 6.3 7.9 6 6.8
$ Ciencias : num 6.5 9.4 9.2 6.5 6 9.6 6.4 9.7 6 7.2
$ Espanol : num 9.2 7.3 8 6.5 7.8 7.7 8.2 7.5 6.5 8.7
$ Historia : num 8.6 7 8 7 8.9 8 9 8 5.5 9
$ EdFisica : num 8 7 7.5 9 7.3 6.5 7.2 6 8.7 7
datos Matematicas Ciencias Espanol Historia EdFisica
Lucia 7.0 6.5 9.2 8.6 8.0
Pedro 7.5 9.4 7.3 7.0 7.0
Ines 7.6 9.2 8.0 8.0 7.5
Luis 5.0 6.5 6.5 7.0 9.0
Andres 6.0 6.0 7.8 8.9 7.3
Ana 7.8 9.6 7.7 8.0 6.5
Carlos 6.3 6.4 8.2 9.0 7.2
Jose 7.9 9.7 7.5 8.0 6.0
Sonia 6.0 6.0 6.5 5.5 8.7
Maria 6.8 7.2 8.7 9.0 7.0